﻿//-----------------------------------------------------------------
//
// @(#)$Id: checkcode.aspx.cs,v 1.0 2013/12/16 9:54:30 lichunhua Exp $
// @(#)$Author: lichunhua  $
// @(#)$Date: 2013/12/16 9:54:30 $
// @(#)$Description:
//
//
//
//                 All Rights Reserved.
//-----------------------------------------------------------------
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
using System.Web;

public partial class checkcode : System.Web.UI.Page
{
    private Bitmap validateimage;
    private Graphics g;

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.BufferOutput = true;    //特别注意
        Response.Cache.SetExpires(DateTime.Now.AddMilliseconds(-1));//特别注意
        Response.Cache.SetCacheability(HttpCacheability.NoCache);//特别注意
        Response.AppendHeader("Pragma", "No-Cache"); //特别注意
        string VNum = MakeValidateCode();
        Session["CheckCode"] = VNum;//取得验证码，以便后来验证
        ValidateCode(VNum);

    }
    public void ValidateCode(string VNum)
    {
        validateimage = new Bitmap(60, 20, PixelFormat.Format24bppRgb);
        g = Graphics.FromImage(validateimage);
        g.FillRectangle(new LinearGradientBrush(new Point(0, 0), new Point(110, 20), Color.FromArgb(240, 255, 255, 255), Color.FromArgb(240, 255, 255, 255)), 0, 0, 200, 200); //矩形框
        g.DrawString(VNum, new Font("arial", 11), new SolidBrush(Color.Red), new PointF(6, 0));//字体/颜色
        g.Save();
        MemoryStream ms = new MemoryStream();
        validateimage.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
        Response.ClearContent();
        Response.Clear();
        Response.BinaryWrite(ms.ToArray());
        Response.End();
    }
    string MakeValidateCode()
    {
        char[] s = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'I', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };//枚举数组
        string num = "";
        Random r = new Random();
        for (int i = 0; i < 5; i++)
        {
            num += s[r.Next(0, s.Length)].ToString();
        }
        return num;
    }

}
